import type { ActionContext } from "vuex";
import type { Counter, State } from "../index";

export default {
  namespaced: true, // 开启命名空间（让所有state\getters\actions\mutations都在自己命名空间中）
  state: {
    count: 0,
  },
  getters: {
    oddOrEven(state: Counter) {
      // return state.count % 2 === 1 ? "奇数" : "偶数";
      return (state.count & 1) === 1 ? "奇数" : "偶数";
    },
  },
  actions: {
    // increment(store) {
    //   // 接受两个参数
    //   // 第一个参数：context（store）
    //   // 第二个参数：调用dispatch函数传递参数（注意：只能传递一个参数）
    //   store.commit("INCREMENT", 1);
    // },
    increment({ commit }: ActionContext<Counter, State>, num: number) {
      // 接受两个参数
      // 第一个参数：context（store）
      // 第二个参数：调用dispatch函数传递参数（注意：只能传递一个参数）
      commit("INCREMENT", num);
    },
  },
  mutations: {
    INCREMENT(state: Counter, num: number) {
      state.count += num;
    },
    DECREMENT(state: Counter, num: number) {
      state.count -= num;
    },
  },
};

// const state = {};
// const getters = {};
// const actions = {};
// const mutations = {};

// export default {
//   state,
//   getters,
//   actions,
//   mutations,
// };
